package br.com.mauricioreis;

import java.util.List;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import br.com.mauricioreis.db.Alimento;

public class AlimentoAct extends Activity {
    public ListView viewAlimento;
    public Button buttonIncluir;
    private Alimento itemSelecionado;
    private static final int INCLUIR_ID = Menu.FIRST;
    private static final int ALTERAR_ID = Menu.FIRST + 1;
    private static final int EXCLUIR_ID = Menu.FIRST + 2;
    private static final int ASSOCIAR_ID = Menu.FIRST + 3;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.alimento);

        // Log.i("medidas", medidas.toString());
        montaBotaoIncluir();
        montaViewAlimento();
        montaClickAlterar();
        registerForContextMenu(viewAlimento);

    }

    private void montaBotaoIncluir() {
        buttonIncluir = (Button) findViewById(R.id.alimentoIncluir);
        buttonIncluir.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                Intent i = new Intent(AlimentoAct.this, AlimentoIncluirAct.class);

                startActivityForResult(i, INCLUIR_ID);
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        montaViewAlimento();

    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        // Pega posição do item selecionado
        AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
        int posicaoItem = info.position;
        // pega o objeto medida da posição selecionada
        itemSelecionado = (Alimento) viewAlimento.getItemAtPosition(posicaoItem);
        // cria botao de exclusão
        menu.add(0, EXCLUIR_ID, 0, "Excluir");
        // cria botao para Associar uma medida a um alimento
        menu.add(0, ASSOCIAR_ID, 0, "Associar medida");
    }

    @Override
    public boolean onContextItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case EXCLUIR_ID:
            if (itemSelecionado != null) {
                Alimento.excluir(AlimentoAct.this, itemSelecionado);
                montaViewAlimento();
                itemSelecionado = null;
                return true;
            }
            break;
        case ASSOCIAR_ID:
            montaClickAssociar();

            return true;
        }
        return super.onContextItemSelected(item);
    }

    private void montaViewAlimento() {
        List<Alimento> alimentos = Alimento.listar(this, new Alimento());
        ArrayAdapter<Alimento> adapterAlimento = new ArrayAdapter<Alimento>(this, android.R.layout.simple_list_item_1, alimentos);
        viewAlimento = (ListView) findViewById(R.id.ListView01);
        viewAlimento.setAdapter(adapterAlimento);
    }

    private void montaClickAlterar() {
        viewAlimento.setOnItemClickListener(new OnItemClickListener() {
            @Override
            @SuppressWarnings(value = "rawtypes")
            public void onItemClick(AdapterView arg0, View arg1, int posicaoItem, long arg3) {
                // pega o objeto alimento da posição selecionada
                Alimento alimentoSelecionado = (Alimento) viewAlimento.getItemAtPosition(posicaoItem);
                // Cria um Intent passando a atividade atual e a classe da atividade seguinte
                Intent i = new Intent(AlimentoAct.this, AlimentoAlterarAct.class);
                i.putExtra("idAlimento", alimentoSelecionado.getId());
                // Toast.makeText(AlimentoAct.this, i.getExtras().get("idAlimento").toString(), Toast.LENGTH_SHORT);
                // i.getExtras().get("idAlimento");
                startActivityForResult(i, ALTERAR_ID);

            }
        });
    }

    private void montaClickAssociar() {

        // Cria um Intent passando a atividade atual e a classe da atividade seguinte
        Intent i = new Intent(AlimentoAct.this, MedidaAssociarAct.class);
        i.putExtra("idAlimento", itemSelecionado.getId());
        // Toast.makeText(AlimentoAct.this, i.getExtras().get("idAlimento").toString(), Toast.LENGTH_SHORT);
        // i.getExtras().get("idAlimento");
        startActivityForResult(i, ASSOCIAR_ID);

    }

}
